<?php
/*Autodetect URL info.*/

/*A ideia desse script é facilitar a vida do cliente. Faz o usuario não
precisar digitar todos os dados referentes ao site que vai ser adicionado 
ao serviço (fazer isso é uma tarefa não tão divertida). Através do software
'whois', o script colhe os dados do site e os formata na tela (os organiza para
que o cliente possa ler e entender os dados sem muita complicação) para apenas
ter a confirmação. Os dados colhidos pelo script vão ser adicionados ao DB. */

/*A URL vem do 'form.html'*/
    $url = $_POST['URL'];
    $saida = shell_exec('whois '. $url);

    $SAVEDETECT = "/var/www/hostup/$url.detc";
    $USRFILE = "/var/www/hostup/$url.rbl";

/*IMPORTANTE: fiz o script usando uma ferramenta do sistema. Não é bom depender
do sistema (no caso de o servidor que hospeda a página não der permissão de uso
do software). Encontrei alguns 'whois' em php (não tão completos quanto esse).
O melhor até agora é esse "phpwhois.org" (a página onde está hospedado é essa
sourceforge.net/projects/phpwhois ). A medida com que o desenvolvimento for
andando, creio que nós tenhamos a nossa propria classe que faz esse tipo de
requisição.*/

/*Cada tipo de domínio irá ter um tratamento diferente. ".com", ".br", ".org"
tem o retorno do whois diferente (o formato do texto, os campos).*/

/** 
 *Esse método retorna o tipo do domínio dado na URL
 *
 * @return string
 * @author thassio
 **/
function trataurl($ende){
    $countaux = 0;
    $trat = explode(".", $ende);

    foreach($trat as $tmp){
           $countaux++;
            }

    $countaux--;
    $result = $trat[$countaux];

    return $result; 
        }

/**
 * Trata o whois de acordo com o retorno o domínio
 * Importante: esse método tem a variável '$urlp' como parâmetro, mas é uma 
 * gambiarra que eu até tenho vergonha de mostrar para os outros >.< 
 *
 * @return void
 * @author thassio
 **/
function tratatext($dom, $urlp)
    {
        $SAVEDETECT = "/var/www/hostup/$urlp.detc";
        $nds = "nada";
    switch ($dom) {
        case "com":
            $handle = fopen($SAVEDETECT, 'r');
            $mux = array();
            $varcount = 0;
            $sname = "server name";
            $sname2 = "domain name:";
            $ip = "ip address"; 
            $ip2 = "name server:";
              while(!feof($handle))
                 {
                $buffer = fgets($handle, 4096);
                list ($svr, $ipadr) = seeknwrite($buffer, $sname, $sname2, $ip, $ip2);           
                
                  if(strcmp($svr, $nds) != 0)
                  {
                  $mux[$varcount] = $svr;
                  $varcount++;
                  }
                  else if(strcmp($ipadr, $nds) != 0 ){
                      $mux[$varcount] = $ipadr;
                      $varcount++;
                  }
                  } 
                fclose($handle);
            return $mux;
            break;
  
        case "br":
            $handle = fopen($SAVEDETECT, 'r');
            $mux = array();
            $varcount = 0;
            $dominio = "domain:";
            $dominio2 = "vazio";
            $nserver = "nserver:";
            $nserver2 = "vazio";
              while(!feof($handle))
                 {
                $buffer = fgets($handle, 4096);
                list ($dmn, $ns) = seeknwrite($buffer, $dominio, $dominio2, $nserver, $nserver2);              


                  if(strcmp($dmn, $nds) != 0)
                  {
                  $mux[$varcount] = $dmn;
                  $varcount++;
                  }
                  else if(strcmp($ns, $nds) != 0 ){
                      $mux[$varcount] = $ns;
                      $varcount++;
                  }
                  }
                fclose($handle);
                return $mux;
                break;
        
        case "org":
            $handle = fopen($SAVEDETECT, 'r');
            $mux = array();
            $varcount = 0;
            $dominio = "domain name:";
            $dominio2 = "vazio";
            $nserver = "name server:";
            $nserver2 = "vazio";
              while(!feof($handle))
                 {
                $buffer = fgets($handle, 4096);
                list ($dmn, $ns) = seeknwrite($buffer, $dominio, $dominio2, $nserver, $nserver2);              

                  if(strcmp($dmn, $nds) != 0)
                  {
                  $mux[$varcount] = $dmn;
                  $varcount++;
                  }
                  else if(strcmp($ns, $nds) != 0 ){
                      $mux[$varcount] = $ns;
                      $varcount++;
                  }
                  }
                fclose($handle);
                return $mux;
                break;
    
        /*Implementar demais casos aqui*/

        default:
            echo "<h1>dafuq!?</h1>";
            fclose($handle);
            break;

        }//Fim do switch
     }//Fim do método 'tratatext()'

/**
 * Procura ocorrencias das strings no arquivo
 * Importante: esse método é uma POG do primeiro ao último caractere...
 *
 * @return array(string, string)
 * @author thassio
 **/
function seeknwrite($line, $query1, $optquery1, $query2, $optquery2){
     if(stristr($line, $query1) || stristr($line, $optquery1))
      {
       $var1 = "\n\n". $line;
        }
        else if(stristr($line, $query2) || stristr($line, $optquery2))
                {
                 $var2 = $line;
                 }
        /*Ainda gera inconsistencia de dados*/
        if(!isset($var1)){
           $var1 = "nada";
           }
        if(!isset($var2)){
            $var2 = "nada";
        }
        return array($var1, $var2);

    }//Fim do método 'seeknwrite()'


/**********************************************************/
/*Gravação em arquivo*/

    $fh = fopen($SAVEDETECT, 'w');
    fwrite($fh, $saida);
    fclose($fh);

    if(file_exists($SAVEDETECT)){
/*Arquivo mais 'user-friendly'. Ainda precisa tratar casos como o do
'python.org' e do 'g1.com.br'. O arquivo gerado é diferente.*/

        $urlsulf = trataurl($url);
        $vetor = tratatext($urlsulf, $url);
        $usrtxt = fopen($USRFILE, 'w');

        foreach ($vetor as $key) {
                fwrite($usrtxt, $key);
                }

            fclose($usrtxt);

/**********************************************************/
/*Mostra o resultado na tela*/

    $leitura = fopen($USRFILE,'r');
    $text = fread($leitura, filesize($USRFILE));
    echo "<pre>$text</pre>";
    fclose($leitura);

    }

?>
